<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //对象的属性名(有三种可能,一个是字符串,一个数字,一个是symbol类型)
        const test = Symbol()
        const obj = {
            [test]: 123,
            0: 123,
            age: 24,
            add: function () {
                obj.age++
                console.log(obj.age);
            },
            update: function () {
                obj.age = 999
                console.log(obj.age);
            },
            del: function () {
                delete obj.age
                console.log(obj);
            },
            get: function () {
                return obj.age
            }
        }

        // 1.obj.age    obj.age 这种是默认去找obj上的属性,但是这种只能访问到属性名是字符串的属性,但是这种不能像第二种一样通过变量访问包括数字   obj.0(报错)   这就是为什么数组y元素只能用arr[0]来访问的原因
        // 2.obj['age']   // []这种形式是为了对象属性能通过js表达式来访问到对应的值产生的
        const year = 'age'
        obj[year]   // [year] => ['age']   js会把[]里面的东西当成表达式来解析
        obj[year + '123'] // [year] => ['age' + '123'] 
        // 所有的遍历以及循环的意思,都是声明一个变量key ,每次循环这个key变量都会变化
        for (let key in obj) {
            obj[key]
        }
        console.log(obj.test); 
    </script>
</head>

<body>

</body>

</html>